/**
 * 演示程序当前的 “注册/登录” 等操作，是基于 “本地存储” 完成的
 * 当您要参考这个演示程序进行相关 app 的开发时，
 * 请注意将相关方法调整成 “基于服务端Service” 的实现。
 **/
 const baseApiUrl = 'http://www.ababy.world/bangbang/';
 const businessApiUrl = function(){
	 return{
		 regUrl:'v1/user/register',//注册
		 loginUrl:'v1/user/login',//登录
		 create:'v2/log/create',//埋点
	 }
 }
(function($, owner) {
	window.baseUrlInfo = {
 	 appName:'bangbangIOS',
 	 versionName:'1.0',
 	 channel:''
 }
 let user1 = {userName:'znn1212',password:'123123123'}
 // https://ask.dcloud.net.cn/article/12602    选项卡页面
	/**
	 * 用户登录
	 **/
	owner.login = function(loginInfo, callback) {
		callback = callback || $.noop;
		loginInfo = loginInfo || {};
		loginInfo.userName = loginInfo.userName || '';
		loginInfo.password = loginInfo.password || '';
		owner.myAjax(businessApiUrl.loginUrl,callback,loginInfo);
	};

	owner.getPrivacyPolicy = function() {
		return "<div class='dialog'>" +
			"<div>更新版本:1.0</div>" +
			"<div>更新时间:2024年08月22日</div>" +
			"<div>生效时间:2024年08月22日</div>" +
			"<div>开发者: 北京傲九科技有限公司</div>" +
			"<div>应用名称:论文帮</div>" +
			"<div>本政策适用于由我们开发和运营的论文帮(以下称“本应用”)我们非常重视您的隐私和个人信息，并始终致力于保护您的隐私。为了您更好地使用本应用服务，我们专门制定了本隐私政策，我们希望向您说明我们在您使用本应用相关服务时收集何种信息以及如何收集、使用和保护这些信息。</div>" +
			"<div>在使用本应用服务前，请您务必仔细阅读我们的隐私政策。除非贵方已阅读并接受本协议的全部条款，否则请贵方立即停止使用本应用服务。一旦贵方勾选或点击“同意《隐私政策》”按钮或以第三方平台账号登录或实际使用本应用服务，即视为贵方已充分理解并接受本隐私政策。</div>" +
			"<div style='color:#000;'>第一部分  定义</div>" +
			"<div>用户:下称“您”或“用户”，是指注册、登录、使用、浏览、获取本政策项下服务的个人或组织。</div>" +
			"<div>个人信息:指以电子或者其他方式记录的能够单独或者与其他信息结合识别特定自然人身份或者反映特定自然人活动情况的各种信息，包括自然人姓名、出生日期、身份证号码、个人生物识别信息、住址、电话号码、设备识别码(如imei、imsi、idfa、 mac,androidld、MEID)等。</div>" +
			"<div style='color:#000;'>第二部分  隐私政策</div>" +
			"<div>本隐私权政策部分将帮助您了解以下内容:</div>" +
			"<div class='knowMsg'>" +
			"<p>1、如何收集、使用您的个人信息</p>" +
			"<p>2、如何转让、公开披露、共享信息</p>" +
			"<p>3、第三方sdk使用</p>" +
			"</div>" +
			"</div>";
	}

	owner.getUserAgreement = function() {
		return "<div class='dialog'>" +
			"<div>开发者:北京傲九科技有限公司</div>" +
			"<div>应用名称:论文帮</div>" +
			"<div>首先感谢您使用论文帮服务。本协议是用户、包括注册用户以及没有注册用户，以注册或浏览方式使用本产品和服务时与我们签署的协议。本协议发布生效日期是2024年08月27日，本软件会不时更新版本协议。</div>" +
			"<div class='dialogTitle'>1、服务条款的确认和接纳</div>" +
			"<div>app的各项内容和服务的所有权归本公司拥有。用户在接受服务之前，请务必仔细阅读本条款。用户使用服务，表示用户接收所有服务条款。</div>" +
			"<div class='dialogTitle'>2、用户同意</div>" +
			"<div>用户在本app的任何行为必须遵循:</div>" +
			"<div class='knowMsg'>" +
			"<p>.1)使用时必须符合中国有关法规。</p>" +
			"<p>.2)不作非法用途和不道德行为。</p>" +
			"<p>.3)不干扰或混乱网络服务。</p>" +
			"</div>" +
			"<div class='dialogTitle'>3、服务条款修改</div>" +
			"<div>本app有权在必要时修改条款，将会在页面公布。</div>" +
			"<div class='dialogTitle'>4、权限使用</div>" +
			"<div>在您使用本软件服务，本软件需要您的部分权限，包括允许获取网</div>" +
			"</div>";
	}
	
	owner.agreementDialog = function(userAgreementId,privacyPolicyId){
		userAgreementId = userAgreementId || "userAgreement"
		var userAgreement = document.getElementById(userAgreementId);
		userAgreement.addEventListener("tap", function() {
			mui.confirm(
				owner.getUserAgreement(),
				'用户协议', ['确定'],
				function(e) {}, 'div')
		});
		privacyPolicyId = privacyPolicyId || "privacyPolicy"
		var privacyPolicy = document.getElementById(privacyPolicyId);
		privacyPolicy.addEventListener("tap", function() {
			mui.confirm(
				owner.getPrivacyPolicy(),
				'隐私政策', ['确定'],
				function(e) {}, 'div')
		});
	}
	// 手机号正则
	owner.isPhoneNum = function(phoneNum){
	    var reg = /^1\d{10}$/; 
	    return reg.test(phoneNum); 
	}
	//密码正则
	owner.isPassword = function(pwd){
		var reg = /^[A-Za-z0-9]{6,20}$/;
		return reg.test(pwd)
	}
	owner.createState = function(name, callback) {
		var state = owner.getState();
		state.account = name;
		state.token = "token123456789";
		owner.setState(state);
		return callback();
	};

	/**
	 * 新用户注册
	 **/
	owner.reg = function(regInfo, callback) {
		callback = callback || $.noop;
		regInfo = regInfo || {};
		regInfo.userName = regInfo.userName || '';
		regInfo.password = regInfo.password || '';
		if (regInfo.userName.length > 20||regInfo.userName.length<2) {
			return callback('用户名2-20个字符');
		}
		if (!owner.isPassword(regInfo.password)) {
			return callback('密码由6-20个数字或字母组成');
		}
		if (!owner.isPhoneNum(regInfo.phone)) {
			return callback('手机号格式不正确');
		}
		if(!regInfo.wechat||regInfo.wechat.length>20){
			return callback('微信号不正确');
		}
		// var users = JSON.parse(localStorage.getItem('$users') || '[]');
		// users.push(regInfo);
		// localStorage.setItem('$users', JSON.stringify(users));
		// return callback();
		owner.myAjax(businessApiUrl.regUrl,callback,regInfo)
	};

	/**
	 * 获取当前状态
	 **/
	owner.getState = function() {
		var stateText = localStorage.getItem('$state') || "{}";
		return JSON.parse(stateText);
	};

	/**
	 * 设置当前状态
	 **/
	owner.setState = function(state) {
		state = state || {};
		localStorage.setItem('$state', JSON.stringify(state));
		//var settings = owner.getSettings();
		//settings.gestures = '';
		//owner.setSettings(settings);
	};

	var checkEmail = function(email) {
		email = email || '';
		return (email.length > 3 && email.indexOf('@') > -1);
	};

	/**
	 * 找回密码
	 **/
	owner.forgetPassword = function(email, callback) {
		callback = callback || $.noop;
		if (!checkEmail(email)) {
			return callback('邮箱地址不合法');
		}
		return callback(null, '新的随机密码已经发送到您的邮箱，请查收邮件。');
	};

	/**
	 * 获取应用本地配置
	 **/
	owner.setSettings = function(settings) {
		settings = settings || {};
		localStorage.setItem('$settings', JSON.stringify(settings));
	}

	/**
	 * 设置应用本地配置
	 **/
	owner.getSettings = function() {
		var settingsText = localStorage.getItem('$settings') || "{}";
		return JSON.parse(settingsText);
	}
	/**
	 * 获取本地是否安装客户端
	 **/
	owner.isInstalled = function(id) {
		if (id === 'qihoo' && mui.os.plus) {
			return true;
		}
		if (mui.os.android) {
			var main = plus.android.runtimeMainActivity();
			var packageManager = main.getPackageManager();
			var PackageManager = plus.android.importClass(packageManager)
			var packageName = {
				"qq": "com.tencent.mobileqq",
				"weixin": "com.tencent.mm",
				"sinaweibo": "com.sina.weibo"
			}
			try {
				return packageManager.getPackageInfo(packageName[id], PackageManager.GET_ACTIVITIES);
			} catch (e) {}
		} else {
			switch (id) {
				case "qq":
					var TencentOAuth = plus.ios.import("TencentOAuth");
					return TencentOAuth.iphoneQQInstalled();
				case "weixin":
					var WXApi = plus.ios.import("WXApi");
					return WXApi.isWXAppInstalled()
				case "sinaweibo":
					var SinaAPI = plus.ios.import("WeiboSDK");
					return SinaAPI.isWeiboAppInstalled()
				default:
					break;
			}
		}
	}
	owner.quit = function() {
		if (mui.os.ios) {
			const threadClass = plus.ios.importClass("NSThread");
			const mainThread = plus.ios.invoke(threadClass, "mainThread");
			plus.ios.invoke(mainThread, "exit");
		} else if (mui.os.android) {
			plus.runtime.quit();
		}
	}
	owner.myAjax = function(url='',successCallback=function(){},params={},method='post',errCallback,headers={'Content-Type':'application/json'},dataType='json',timeout=10000){
		let baseUrlInfo = JSON.parse(localStorage.getItem('baseUrlInfo')) || {}
		let data = {...params,...baseUrlInfo};
		owner.consoleObj(data,'data')
		mui.ajax(baseApiUrl+url,{
			data,
			dataType,//服务器返回json格式数据
			type:method,//HTTP请求类型
			timeout,//超时时间设置为10秒；
			//headers,	              
			success:function(data){
				//服务器返回响应，根据响应结果，分析是否登录成功；
				owner.consoleObj(data)
				if(successCallback){successCallback(data)}
			},
			error:function(xhr,type,errorThrown){
				//异常处理；
				if(errCallback){
					errCallback(xhr,type,errorThrown)
				}else{
					mui.toast(type)
				}
			}
		});
	}
	owner.getIDFA = function(){
		if (mui.os.ios) {
			if(localStorage.getItem('idfa')){
				window.baseUrlInfo = {...{idfa:localStorage.getItem('idfa'),channel:'iOS'},...window.baseUrlInfo}
				localStorage.baseUrlInfo = JSON.stringify(baseUrlInfo)
				return;
			}
		}else if(mui.os.android){
			if(localStorage.getItem('androidId')){
				window.baseUrlInfo = {...window.baseUrlInfo,...{androidId:localStorage.getItem('androidId'),channel:'vivo\oppo\huawei\hono'}}
				localStorage.baseUrlInfo = JSON.stringify(baseUrlInfo)
				return;
			}
		}
		// 为获取idf需要配置NSUserTrackingUsageDescription隐私描述 下链接
		// https://uniapp.dcloud.net.cn/tutorial/app-ios-idfa.html#app%E4%B8%AD%E8%8E%B7%E5%8F%96idfa%E6%A0%87%E8%AF%86
		plus.device.getInfo({//需要勾选IDFA
			success:function(e){
				if(e.idfa){
					localStorage.setItem('idfa',e.idfa);
					window.baseUrlInfo = {...{idfa:e.idfa,channel:'iOS'},...window.baseUrlInfo}
				}else if(e.uuid){
					localStorage.setItem('androidId',e.uuid);
					window.baseUrlInfo = {...window.baseUrlInfo,...{androidId:e.uuid,channel:'mi'}}
				}
				localStorage.baseUrlInfo = JSON.stringify(baseUrlInfo)
			},
			fail:function(e){
				console.log('getDeviceInfo failed: '+JSON.stringify(e));
			}
		});
		
	}
	owner.consoleObj = function(data,name){
		if(name)
		console.log(name,JSON.stringify(data));
		else
		console.log(JSON.stringify(data));
	}
	owner.getUserInfo = function(str){
		let userInfo = JSON.parse(localStorage.getItem("userInfo"));
		if(userInfo){
			if(str){
				if(typeof userInfo == 'object'){
					return userInfo[str] || '';
				}else{
					return ''
				}
			}else{
				return userInfo;
			}
		}else{
			return '';
		}
	}
}(mui, window.app = {}));